THE_end's Webplaza



Hjemmeside- kurs --> XML

Dette er introduksjon til XML laget av Stephan Nedreg�rd

Innhold

Lengre nede i dokumentet kan du n�r som helst klikke p� en overskrift (av typen ovenfor) for � komme tilbake til innholdsfortegnelsen.


Bakgrunn

En viss kunnskap i HTML og CSS (Cascading Stylesheets) er p�krevd i dette dokumentet. Kjenner du ikke til disse teknologiene, kan du l�re om dem her: HTMLv - CSSv.

Dette dokumentet tar for seg XML som st�ttet i Internet Explorer 5.0 og Mozilla 5 (kommende Netscape 5).

Internet Explorer 5 har en XML-st�tte som kan oppfattes som av noe tvilsom natur. For dem som m�tte v�re interesserte i dette og problemstillinger som reises av den grunn kan ta en titt p� XML.com's artikkel om XML-st�tten i IE5: [i XML-formatv] - [i HTML-formatv]


Grunnleggende oppbygging

Alle XML-dokumenter starter med en linje som identifiserer dokumentet som XML-dokument og angir hvilket tegnsett dokumentet bruker. (Man kan angi mer her, dette omtales senere): <?xml version="1.0" encoding="ISO-8859-1"?>

Tegnsettet ISO-8859-1 (som brukes her) er standardtegnsettet i det vestlige Europa og i USA. Det m� angis i norske dokumenter dersom vi vil ha st�tte for de norske tegnene �, � og � (b�de sm� og store bokstaver).

Deretter kan vi starte � skrive XML. XML skrives stort sett som HTML, vi starter og avslutter elementene som i HTML: <bold>Tekst</bold>

Den st�rste forskjellen mellom de to spr�kene er at vi i XML lager elementene selv - vi definerer hvorledes de skal se ut og hvorledes de skal forholde seg til hverandre. Dette gj�res enkelt og greit ved hjelp av Cascading Stylesheets. Ved � skrive CSS til v�re elementer, angir vi hvorledes de skal se ut. Dette gj�res akkurat som n�r vi skriver CSS til HTML. Eksempelvis kan vi definere utseendet p� bold-elementet overfor slik i CSS: bold {display: inline; font-weight: bold;}

Hittil ser alt ganske likt ut, ikke sant? Vel, XML og HTML fungerer ganske likt. Det er likevel et par forskjeller mellom de to:
1. I XML kan vi ikke bruke sm� og store bokstaver om hverandre n�r vi angir elementnavnene. bold, BOLD og Bold er tre forskjellige (mulige) elementer i XML. Om du synes dette er vanskelig, pr�v da � holde deg til kun sm� bokstaver i elementnavnene.

2. Elementer som kun best�r av en tagg, alts� som "kun startes" og ikke avsluttes, slik som <br>, har et minimalt annerledes utseende. Man avslutter elementet samtidig som man starter det, slik: <br/>. Dette fordi XML i utgangspunktet ikke vet hvilke elementer som skal avsluttes p� vanlig m�te (slik som <h1> i HTML) og hvilke som ikke avsluttes (slik som <br> i HTML).


Et eksempeldokumentv

  <?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/css" href="xmlstyle.css"?>
<side>
<overskrift>Eksempeldokument</overskrift>
<tekst>Dette er et eksempeldokument<br/>
Hvori dette er linje 2</tekst>
</side>

Stylesheets i XML

 

Kobling til CSS fra XML-dokumentet

Du ser et eksempel p� tilknytning av stylesheet i eksemplet ovenfor. Dette gj�res (som du ser) ved hjelp av f�lgende linje: <?xml-stylesheet type="text/css" href="xmlstyle.css"?>

Dette tilsvarer f�lgende i HTML: <link rel="stylesheet" type="text/css" href="xmlstyle.css">

 

Noen viktige CSS-egenskaper i forbindelse med XML-dokumenter

CSS-egenskapen display er meget viktig n�r vi definerer utseendet p� XML-dokumentet v�rt ved hjelp av CSS. display angir hva slags element

    Display kan ha f�lgende verdier:
  • inline - elementer slik som b, i, u, dvs. elementer som beskriver tekstomr�der inne i avsnitt og andre blokker
  • block - blokkelement, slik som p og div, dvs. elementer som utgj�r frittst�ende blokker
  • list-item (d�rlig st�ttet i n�v�rende browsere)

Som du s� definerte jeg ovenfor bold som inline. La oss ta et annet element, avsnitt. Dette beskriver et avsnitt ;) - Avsnitt skal dermed v�re et blokkelement, vi skriver derfor f�lgende inn i stylesheetet: avsnitt {display: block;}

For � f� marger m� vi bruke margin og tilsvarende egenskaper. Marger blir ikke lagt inn automatisk. La oss legge til en marg p� 1em: avsnitt {display: block; margin-bottom: 1em;}

Derved er avsnitt definert!

 

Tilordning av CSS-stiler til "siden" i XML-dokumenter

Tilordning av CSS-stiler til "siden" (tilsvarende body i HTML) gj�res p� forskjellige m�ter i Internet Explorer 5 og Netscape 5/Mozilla. I IE5 gj�res dette ved � skrive dem inne i klammer uten � sette et elementnavn foran, slik: {background: navy; margin: 0px;}

Dette vil Mozilla-baserte browsere glatt overse. Hos disse tilordner vi stilene til �verste element (det elementet alle andre elementer befinner seg inne i), slik: side {padding: 10px; background: navy; color: yellow; font-family: arial, sans-serif; display: block;}

Internet Explorer godtar dette, men legger da til en marg rundt det �verste elementet. For � f� XML-stylesheetet v�rt til � fungere i begge browserne m� vi tilordne bakgrunnsfarge og marg p� IE5-metoden og s� bruke Mozilla-metoden: {background: navy; margin: 0px;}
side {padding: 10px; background: navy; color: yellow; font-family: arial, sans-serif;}

 


Nok et eksempeldokument

N� kan du nok til � skrive et dokument i XML, slik som f�lgende: (Vi skal komme tilbake til andre detaljer - slik som linking - senere) <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/css" href="xmlstyle.css"?> <side> <overskrift>Eksempeldokument</overskrift> <avsnitt> Dette er et eksempeldokument. Vi skal n� teste skriving av et ganske enkelt (og greit) dokument i <bold>XML</bold>. </avsnitt> <avsnitt> For � f� det rette utseendet er dette dokumentet linket til et stylesheet. </avsnitt> </side>

Og s� v�rt lille stylesheet (xmlstyle.css): { background: navy; margin: 0px; } side { padding: 10px; background: navy; color: yellow; font-family: arial, helvetica, helv, sans-serif; display: block; } overskrift { display: block; font-size: 18pt; margin-bottom: .5em; } avsnitt { display: block; margin-bottom: 1em; width: 300px; } bold { display: inline; font-weight: bold; }

Ta en titt p� dette dokumentet! (krever XML-browser)


HTML i XML

N� skal vi putte inn noen HTML-elementer i XMLen v�r!

Vi skal ta utgangspunkt i f�lgende eksempel: <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/css" href="xmlstyle.css"?> <side xmlns:html="http://www.w3.org/TR/REC-html40"> <overskrift>Eksempeldokument</overskrift> <avsnitt> Dette er et eksempeldokument. Vi skal n� teste skriving av et ganske enkelt (og greit) dokument i <bold>XML</bold>. </avsnitt> <avsnitt> For � f� det rette utseendet er dette dokumentet linket til et stylesheet. </avsnitt> <avsnitt> <html:a href="http://www.micropop.com">Link til MicroPop</html:a> </avsnitt> </side>

Ta en titt p� dette dokumentet!

Vi refererer her til HTML-spr�ket og bruker elementer fra dette. Det gj�r vi ved f�rst � si ifra om at vi skal bruke HTML-spr�ket -- ved � angi attributten xmlns:html i det elementet som vi skal benytte HTML innenfor1. I eksempeldokumentet ovenfor setter vi attributten i side, slik at vi fritt kan benytte HTML-elementer i hele dokumentet.

Vi angir xmlns:html til "http://www.w3.org/TR/REC-html40", som er plasseringen der HTML 4.0 er definert.

For � markere at et element er hentet fra HTML-spr�ket m� vi angi html: foran HTML-elementnavnene2. Slik f�r XML-leseren vite at det er et HTML-element vi �nsker � benytte. Hvis vi f.eks. skal benytte HTML-elementet a, gj�r vi dette slik: <html:a href="http://www.micropop.com/">Micropop</html:a>

Likeledes om vi �nsker � benytte h1: <html:h1>Mitt f�rste XML-dokument</html:h1>

Dette er ganske enkelt og greit (n�r man har blitt vant til det). Det som kanskje er litt verre � huske p� er at XML-regelen om at alle elementer m� avsluttes gjelder ogs� her! Om vi �nsker � bruke et element som ikke trenger avslutting i HTML, slik som br, m� vi huske � legge til en skr�strek p� slutten: <html:br/>

Det er heller ikke tillatt med attributter som ikke er satt til noen verdi, slik som f.eks. <hr noshade> og <dl compact>. � sette disse til ingenting fungerer derimot bra i b�de IE5 og Mozilla: <html:hr noshade=""/>


CSS anvendt p� HTML-elementer i XML

N�r vi skal angi CSS for HTML-elementene v�re, f.eks. a i eksempelet ovenfor, kan vi ikke gj�re slik: html:a {color: white; text-decoration: underline;}

Hvorfor? Fordi kolontegnet har en spesiell funksjon i CSS fra f�r av. (Du har kanskje v�rt borti a:link, p:first-letter eller a:hover f�r?).

Hva vi da skal gj�re? Vi putter inn en backslash (\) foran kolonet. Dette forteller XML-leseren v�r at den ikke skal tolke kolonet p� CSS-m�ten. Dermed blir dette den riktige stiltilordningen for html:a html\:a {color: white; text-decoration: underline;}

Tilsvarende til a:hover i HTML blir alts� html\:a:hover. Her er det om � gj�re � v�re ikke stokke om p� kolonene!


Eksempeldokument med HTML i XML

Praktisk eksempel p� bruk av HTML (og CSS for HTML) i et XML-dokument: <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/css" href="xmlstyle.css"?> <side xmlns:html="http://www.w3.org/TR/REC-html40"> <overskrift>Eksempeldokument</overskrift> <avsnitt> Dette er et eksempeldokument. Vi skal n� teste skriving av et ganske enkelt (og greit) dokument i <bold>XML</bold>. </avsnitt> <avsnitt> For � f� det rette utseendet er dette dokumentet linket til et stylesheet. </avsnitt> <avsnitt> <html:a href="http://www.micropop.com">MicroPop</html:a> </avsnitt> </side>

Stylesheetet (xmlstyle.css): { background: navy; margin: 0px; } side { padding: 10px; background: navy; color: yellow; font-family: arial, helvetica, helv, sans-serif; display: block; } overskrift { display: block; font-size: 18pt; margin-bottom: .5em; } avsnitt { display: block; margin-bottom: 1em; width: 300px; } bold { display: inline; font-weight: bold; } html\:a {color: white; text-decoration: underline;} html\:a:hover {color: cyan;}

Ta en titt p� dette dokumentet!


CDATA

(Om f�lgende skulle representere en helt ukjent problemstilling er det bare � hoppe over avsnittet. Du vil da ikke f� bruk for � bruke CDATA slik som beskrevet her.)

I XML blir alle 'character entities', slik som f.eks. &lt; (som vi i HTML bruker for mindre-enn-tegn, <, for � unng� at HTML-leseren tolker tegnet som starten p� en tagg) gjort om til de tegn de representerer f�r dokumentet blir behandlet. &lt;h1&gt; blir dermed behandlet likt med <h1> i XML - i motsetning til i HTML, der f�rstnevnte vil vise frem <h1> i dokumentet.

Til gjengjeld har man en ny og bedre m�te � gjengi slike tegn p�. N�r man f.eks. skal gjengi XML- eller HTML-kode, kan man bruke CDATA: <![CDATA[<h1>Dette er en overskrift</h1>]]>

Vil vise frem: <h1>Dette er en overskrift</h1>

Alt mellom [ og ] vil vises frem som det st�r, uten � bli tolket av XML-leseren.


Til slutt

Vi har n� g�tt gjennom grunnleggende bruk av XML som benyttet av nettleserne Internet Explorer 5.0 og Mozilla/Netscape 5. Eksperimenter, pr�v deg frem - ha det g�y. Om det skulle v�re noe, om du skulle oppdage noe rart/nytt eller har noe � utsette p� artikkelen er det bare � sende meg en mail p� [email protected]!

Fotnoter

1
For andre spr�k vil attributten endres til xmlns:spr�k, der spr�k angir spr�ket vi skal bruke elementer fra. Attributten skal alltid settes til en URL der spr�kets elementer er definert for bruk i XML.
2
Dette gjelder for alle namespaces. N�r vi benytter oss av et namespace (her html) m� vi alltid angi namespacet f�r elementnavnet vi skal bruke, slik at XML-leseren vet hvilket namespace som skal benyttes. (Det finnes en m�te � angi at alt innhold innenfor et element tilh�rer et namespace, men dette fungerer ikke med Internet Explorer 5).